#ifndef HSL_HEURISTIC_H
#define HSL_HEURISTIC_H

#include "tbb/task.h"

/// :: base class ::
template <class F, class C, class Base=tbb::task>
class HeuristicBase : public Base {
public:
    /// :: must define ::
    virtual void apply() = 0;
    /// :: must define ::
    virtual void handleFeedback(std::unique_ptr<CallPoint> c, 
        std::unique_ptr<Feedback> f) = 0;
protected:
    //HeuristicBase* execute();
    void preApply();
    void postApply();
};

#endif
